In storage media applications, traditionally a microprocessor (uP) is employed to control the operations of a controller as depicted in prior art FIGS. 1-3. In such applications, the microprocessor executes routine processes and algorithms (sometimes referred to as program code or firmware code) stored in its program memory being of variable storage capacity limited substantially by cost and space. One approach traditionally utilized to address this problem is to store program code in ROM (read-only memory) or EPROM memory external to the uP as in FIG. 1. External memory facilitates the frequent changes of firmware due to product enhancements, bug fixes, and customer's special requirements. Due to the costliness of memory chips and board space, the disadvantage of this is the memory's component cost and board space requirements.
To address the above problems, several approaches have been adopted in the past. The uP can contain the firmware in its internal ROM as shown in FIG. 2. While this approach resolves board space restrictions, flexibility of firmware is lost in that different code or versions thereof can not be loaded in the ROM. Furthermore firmware problems or bugs can not be resolved without replacing the ROM.
Yet another approach employed as shown in FIG. 3 particularly employed in mass storage applications is to execute firmware from a RAM (Random Access Memory) after moving the firmware code from reserved blocks on a disk. Typically, the microprocessor contains an internal ROM from which code is executed to move the firmware to a RAM. Where this approach retains code flexibility, the cost and space restrictions apply at best to a lesser extent.
In a prior art solid state storage system employing external reserved blocks of non-volatile or flash memory and on-chip microprocessors, firmware is initially stored in flash memory and subsequently downloaded to off-chip RAM. During normal operation, the microprocessor executes code from the off-chip RAM. While this approach maintains code flexibility, it is again costly and consumes space on the board.
Therefore, microprocessor-controlled solid state storage systems present the problem of utilizing readily modifiable firmware while requiring efficient use of silicon as well as board space in order to, among other reasons, reduce production costs. The present invention solves this problem as described below.